package br.com.locanet.view.impl;

import br.com.locanet.view.AbstractManagedBean;

public class LoginBean extends AbstractManagedBean{
	/*
	@SuppressWarnings("unchecked")
	private Class entityClass;
	
	@Override
	@MethodAction(success = "tiles.index",fail = "tiles.login.login")
	@Security(attributes={"funcionario","cliente"},classes={Funcionario.class,Cliente.class})
	public void delete() throws Exception {
		getRequest().getSession().invalidate();
	}
	
	@Override
	@MethodAction(success = "tiles.index",fail = "tiles.login.login", method="post")
	public void select() throws Exception {
		
		Pessoa pessoa = getPessoaInstance(getRequest());
		String sessao = getRequest().getParameter("tipoLogin")!=null?getRequest().getParameter("tipoLogin"):(String)getRequest().getAttribute("tipoLogin");
		
		pessoa.setLogin(getRequest().getParameter("entity.login")!=null?getRequest().getParameter("entity.login"):(String)getRequest().getAttribute("login"));
		pessoa.setSenha(getRequest().getParameter("entity.senha")!=null?getRequest().getParameter("entity.senha"):(String)getRequest().getAttribute("senha"));
		
		pessoa.setLogin(pessoa.getLogin()==null||pessoa.getLogin().isEmpty()?" ":pessoa.getLogin());
		pessoa.setSenha(pessoa.getSenha()==null||pessoa.getSenha().isEmpty()?" ":pessoa.getSenha());
		
		pessoa.setStatus(1);
		
		List<Pessoa> pessoas = getEntityService().select(pessoa);
		if(pessoas.isEmpty())
			throw new InvalidAttributeException("loginNaoEfetuado");
		else
			getRequest().getSession().setAttribute(sessao, pessoas.get(0));
	}
	
	@SuppressWarnings("unchecked")
	@Override
	protected Class<Pessoa> getEntityClass() {
		if (entityClass == null){
			if (isCliente(getRequest()))
				entityClass = Cliente.class;
			else if (isFuncionario(getRequest()))
				entityClass = Funcionario.class;
		}
		return entityClass;
	}
	
	private Pessoa getLogado(){
		if (isCliente(getRequest()))
			return (Pessoa) getRequest().getSession().getAttribute("cliente");
		else if (isFuncionario(getRequest()))
			return (Pessoa) getRequest().getSession().getAttribute("funcionario");
		throw new ControllerSecurityLocaNetException("semAcesso");
	}

	private Pessoa getPessoaInstance(HttpServletRequest req) throws InvalidAttributeException {
		if (isCliente(req))
			return new Cliente();
		else if (isFuncionario(req))
			return new Funcionario();
		throw new ControllerSecurityLocaNetException("semAcesso");
	}

	private PessoaService<? extends Pessoa, ? extends PessoaDAO<? extends Pessoa>> getPessoaService() {
		if (isCliente(getRequest()))
			return new ClienteService();
		else if (isFuncionario(getRequest()))
			return new FuncionarioService();
		throw new ControllerSecurityLocaNetException("semAcesso");
	}
	
	private boolean isCliente(HttpServletRequest req){
		return (req.getParameter("tipoLogin")!=null&&req.getParameter("tipoLogin").equalsIgnoreCase("cliente")) || req.getSession().getAttribute("cliente")!=null;
	}
	
	private boolean isFuncionario(HttpServletRequest req){
		return (req.getParameter("tipoLogin")!=null&&req.getParameter("tipoLogin").equalsIgnoreCase("funcionario")) || req.getSession().getAttribute("funcionario")!=null;
	}

	@Override
	@MethodAction(success = "tiles.login.update",fail = "tiles.login.update",method="post")
	@Security(attributes={"funcionario","cliente"},classes={Funcionario.class,Cliente.class})
	public void update() throws Exception {
		setEntity(getLogado());
		setVariables();
		getEntityService().update(getEntity());
		getRequest().setAttribute("login", getEntity().getLogin());
		getRequest().setAttribute("senha", getEntity().getSenha());
		getRequest().setAttribute("tipoLogin", getTipoLogin());
		select();
	}
	
	private String getTipoLogin() {
		if (isCliente(getRequest()))
			return "cliente";
		else if (isFuncionario(getRequest()))
			return "funcionario";
		throw new ControllerSecurityLocaNetException("semAcesso");
	}

	@SuppressWarnings("unchecked")
	@Override
	public PessoaService<Pessoa, PessoaDAO<Pessoa>> getEntityService()
			throws ClassNotFoundException {
		return (PessoaService<Pessoa, PessoaDAO<Pessoa>>) getPessoaService();
	}
	*/
}
